package com.cs.store.controller;

import com.cs.common.result.HttpResp;
import com.cs.common.result.ResultCode;
import com.cs.domain.entity.StoreGoods;
import com.cs.store.service.IStoreGoodsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@Slf4j
@RequestMapping("/api/storegoods")
public class StoreGoodsController {
    @Autowired
    private IStoreGoodsService isgs;

    /**
     * 根据JoinStoreGoods表中的store_goods_id，获取到store_goods对象
     *
     * @return
     */
    @GetMapping("/findTheStoreGoods")
    public StoreGoods findTheStoreGoods(String storeGoodsId) {
        return isgs.findTheStoreGoods(storeGoodsId);
    }


    /**
     * 商家端查询所有入库商品
     *
     * @return
     */
    @GetMapping("/findAllGoodsByStoreIdOnline")
    public HttpResp findAllGoodsByStoreIdOnline(Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findAllGoodsByStoreIdOnline(storeId));

    }
    @GetMapping("/findAllGoodsByStoreId")
    public HttpResp findAllGoodsByStoreId(Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findAllGoodsByStoreId(storeId));

    }


    /**
     * 查询商家已经上架的商品分类
     *
     * @return
     */
    @GetMapping("findTypeByStoreIdOnline")
    public HttpResp findTypeByStoreIdOnline(Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findTypeByStoreIdOnline(storeId));

    }
    @GetMapping("findTypeByStoreId")
    public HttpResp findTypeByStoreId(Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findTypeByStoreId(storeId));

    }


    /**
     * 商家已经上架的商品，根据分类查看
     *
     * @return
     */
    @GetMapping("findGoodsByTypeIdOnline")
    public HttpResp findGoodsByTypeIdOnline(Long typeId, Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findGoodsByTypeIdOnline(typeId,storeId));
    }
    @GetMapping("findGoodsByTypeId")
    public HttpResp findGoodsByTypeId(Long typeId, Long storeId) {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findGoodsByTypeId(typeId,storeId));
    }


    /**
     * 从goods表中添加商品到自己店铺中
     * 需要插入的字段有：商品id、商家id、过期时间、库存量，
     * 默认上架状态、是否临期、是否爆款为0
     * @param storeGoods
     * @param storeId
     * @return
     */
    @PostMapping("addStoreGoods")
    public HttpResp addStoreGoods(StoreGoods storeGoods, Long storeId) {
        isgs.addStoreGoods(storeGoods);
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS,new Date(), isgs.findAllGoodsByStoreId(storeId));
    }


    /**
     * 修改本店铺中的商品信息
     * 根据JoinStoreGoods表中的store_goods_id，获取到store_goods对象，修改后再更新到数据库
     * 商品id、商家id 不可以被修改
     *
     * @param storeGoods
     * @param storeId
     * @return
     */
    @PostMapping("updStoreGoods")
    public HttpResp updStoreGoods(StoreGoods storeGoods, Long storeId) {
        isgs.updStoreGoods(storeGoods);
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS, new Date(), isgs.findAllGoodsByStoreId(storeId));
    }


    /**
     * 根据根据JoinStoreGoods表中的store_goods_id，删除store_goods对象
     *
     * @param storeGoodsId
     * @param storeId
     * @return
     */
    @PostMapping("delStoreGoods")
    public HttpResp delStoreGoods(Long storeGoodsId, Long storeId) {
        isgs.delStoreGoods(storeGoodsId);
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS, new Date(), isgs.findAllGoodsByStoreId(storeId));
    }


    /**
     * 查询管理端所有商品
     *
     * @return
     */
    @GetMapping("/findGoods")
    public HttpResp findGoods() {
        return HttpResp.result(ResultCode.USER_LOGIN_SUCCESS, new Date(), isgs.findGoods());
    }
}
